The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for composite contention aware task scheduling.
Resource contention is a conflict over access to shared resources, such as memory, disk storage, I/O devices, and cache. Multi-processor data processing systems may have shared memories, for instance. Multi-threaded processors may have a plurality of threads accessing the same caches. Multi-processor and multi-threaded data processing systems may experience latency due to resource contention despite the obvious advantages of multi-processing and multi-threading.
For example, many programs can be broken up into compute tasks and communication tasks. Compute tasks are portions of code that perform computational functions, such as arithmetic functions. Communication tasks are portions of code that perform I/O functions, such as accesses (i.e., load/store) to memory or persistent storage. When several threads access shared resources at the same time, resource contention may introduce latency into the threads.